package com.dazhewan.common;

import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * @author zhengxuexue
 * @date 2023/12/15 16:53
 * @description 全局异常类，项目中的统一日志类
 */
public class GlobalLogger {
    private final Logger logger;

    /**
     * 用于初始化全局Log类，并且设置使用日志的类和日志的输出等级。
     *
     * @param userLogClass 使用日志输出的类，用于记录发生错误的类信息b
     *                     便于定位错误。
     * @author zhengdanyu
     * @date 2023/12/15 17:07
     */
    public GlobalLogger(Class userLogClass, GlobalLoggerLevelEnum loggerLevelEnum) {
        this.logger = Logger.getLogger(userLogClass.getName());
        this.logger.setLevel(loggerLevelEnum.getLevel());
        this.logger.setUseParentHandlers(false);
    }

    /**
     * 输出错误级别的日志
     *
     * @param message 带有特定日志参数的信息
     * @param params  信息中的参数
     * @author zhengdanyu
     * @date 2023/12/15 17:24
     */
    public void error(String message, Object... params) {
        logger.log(Level.SEVERE, message, params);
    }

    /**
     * 输出普通信息日志
     *
     * @param message 带有特定日志参数的信息
     * @param params  信息中的参数
     * @author zhengdanyu
     * @date 2023/12/15 17:24
     */
    public void info(String message, Object... params) {
        logger.log(Level.INFO, message, params);
    }


    /**
     * 输出配置相关信息日志
     *
     * @param message 带有特定日志参数的信息
     * @param params  信息中的参数
     * @author zhengdanyu
     * @date 2023/12/15 17:24
     */
    public void config(String message, Object... params) {
        logger.log(Level.CONFIG, message, params);
    }

    /**
     * 输出调试相关信息日志
     *
     * @param message 带有特定日志参数的信息
     * @param params  信息中的参数
     * @author zhengdanyu
     * @date 2023/12/15 17:24
     */
    public void debug(String message, Object... params) {
        logger.log(Level.FINEST, message, params);
    }

}
